<?php
require_once ("../utils/ConnectionFactory.php");
require_once ("../persistance/data/LieuDO.php");

/**
 *
 * CRUD pour lieu en base de donnee
 * @author Quentin Laujac, Charles Hurtevent
 *
 */
class LieuDAO{

	/**
	 * retourne une list de lieuDO en fonction du numero de structure
	 * @param entier $numeroStructure
	 */
	public function getListLieuDOByNumStructure($numeroStructure){
		$connection = ConnectionFactory::getConnection ();
		$reponse = $connection->query ( "SELECT * FROM lieu WHERE num_struct =  ".$numeroStructure );

		if ($reponse == null || $reponse->rowCount () == 0) {
			return null;
		}

		$listLieuDO = new ArrayObject ();
		while ( $donnee = $reponse->fetch () ) {
			$LieuDO = $this->setLieuDO ( $donnee );
			$listLieuDO->append ( $LieuDO );
		}
		return $listLieuDO;
	}

	/**
	 * retourne Tout les lieuDO connu de la base
	 */
	public function getListLieuDO(){
		$connection = ConnectionFactory::getConnection ();
		$reponse = $connection->query ( "SELECT * FROM lieu ORDER BY adresse asc");

		if ($reponse == null || $reponse->rowCount () == 0) {
			return null;
		}

		$listLieuDO = new ArrayObject ();
		while ( $donnee = $reponse->fetch () ) {
			$LieuDO = $this->setLieuDO ( $donnee );
			$listLieuDO->append ( $LieuDO );
		}
		return $listLieuDO;
	}



	/**
	 * retourne un lieuDO en fonction d'un numero de lieu
	 */
	public function getLieuDOByNumLieu($numeroLieu){
		$connection = ConnectionFactory::getConnection ();
		$reponse = $connection->query ( "SELECT * FROM lieu WHERE num_lieu =  ".$numeroLieu );
		if ($reponse == null || $reponse->rowCount () == 0) {
			return null;
		}
		$donnee = $reponse->fetch ();
		$lieuDO = $this->setLieuDO($donnee);

		return $lieuDO;
	}

	private function setLieuDO($donnee){
		$lieuDO = new LieuDO();
		$lieuDO->setAdresse($donnee['adresse']);
		$lieuDO->setNumeroLieu($donnee['num_lieu']);
		$lieuDO->setNumeroStructure($donnee['num_struct']);

		return $lieuDO;
	}
}